package com.hhm.huo.controller;


import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.hhm.huo.entity.Result;
import com.hhm.huo.entity.Search;
import com.hhm.huo.entity.Tickets;
import com.hhm.huo.service.ITicketService;
import com.hhm.huo.service.ITicketsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;

import org.springframework.web.bind.annotation.RestController;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author 安安
 * @since 2022-05-26
 */
@RestController
@RequestMapping("/ticket")
public class TicketController {
    @Autowired
    ITicketsService ticketsService; // 视图
    @Autowired
    ITicketService ticketService; // 车票

    /**
     * 列表
     * @param search
     * @return
     */
    @RequestMapping("list")
    public Result list(@RequestBody Search search){
        // 1、分页
        Page<Tickets> page = new Page<>(search.getPageNum(), search.getPageSize());
        ///2、对象封装类
        QueryWrapper<Tickets> wrapper = new QueryWrapper<>();

        // column 对应数据库表中的字段  ； 值 为对应的实体类属性
        // 模糊查询
        if (StringUtils.hasText(search.getKey())){
            wrapper.like("name",search.getKey());
        }

        // 区间查询--开始时间
        if (search.getStartDate()!=null){
            wrapper.ge("use_date",search.getStartDate());
        }

        // 区间查询 -- 结束时间
        if (search.getEndDate()!=null){
            wrapper.le("use_date",search.getEndDate());
        }

        // 下拉框查询
        if (search.getSfz()!=0 && search.getSfz() > 0){
            wrapper.eq("start_station_id",search.getSfz());
        }

        // 3、  1 2 传参 》 调用分页查询方法 -- 返回分页数据
        Page<Tickets> ticketsPage = ticketsService.page(page, wrapper);

        return new Result(ticketsPage);
    }

    /**
     * 删除
     * @param id
     * @return
     */
    @RequestMapping("del")
    public Result del(Integer id){
        ticketService.removeById(id);
        return new Result(200,"");
    }
}
